#include "VentanaEditarEsc.h"
#include "Rectangulo.h"
#include "Circulo.h"
#include <iostream>


VentanaEditarEsc::VentanaEditarEsc(void)
{
}

VentanaEditarEsc::~VentanaEditarEsc(void)
{	//libero memoria de la lista de figuras
	/*std::list<Figura*>::iterator iter;
	iter = this->iteratorListaFiguras();
	int i = 1;
	Figura *figura;
	while(i<=this->sizeListaFiguras()){
		figura = *iter;
		delete figura;
		iter++;
		i++;
	}
	*/
}

VentanaEditarEsc::VentanaEditarEsc(std::string nombreEsc){
	std::string aux("     Editar");
	this->nombre = aux.append(nombreEsc);
	this->nombreEsc = nombreEsc;
	this->alto = 700;
	this->ancho = 900;
	this->nombre = nombre;
	this->colorFondoVentana = new Color(220,220,220);
	
	//se crea el escenario verde de fondo de la ventana
	Posicion* posEsc = new Posicion(10,10);
	Rectangulo* escenario = new Rectangulo("1",800,600,posEsc);
	escenario->setColorFigura(new Color(0,255,0));
	this->addFigura(escenario);
	
	//creo botones actualizar
	Posicion* posBtActualizar = new Posicion(400,640);
	Rectangulo* btActualizar = new Rectangulo("2",100,35,posBtActualizar);
	this->addFigura(btActualizar);
	
	//creo boton guardar
	Posicion* posBtGuardar = new Posicion(660,640);
	Rectangulo* btGuardar= new Rectangulo("3",100,35,posBtGuardar);
	this->addFigura(btGuardar);
	
	//creo boton cancelar
	Posicion* posBtCancelar = new Posicion(790,640);
	Rectangulo* btCancelar = new Rectangulo("4",100,35,posBtCancelar);
	this->addFigura(btCancelar);
	
	//creo el circulo amarillo
	Posicion* posBt1 = new Posicion(850,50);
	Circulo* bt1 = new Circulo("boton1",20,posBt1);
	bt1->setColorFigura(new Color(230,230,0));
	this->addFigura(bt1);
	
	Posicion* posBt2 = new Posicion(850,100);
	Circulo* bt2 = new Circulo("boton2",20,posBt2);
	bt2->setColorFigura(new Color(230,230,0));
	this->addFigura(bt2);  
	
	Posicion* posBt3 = new Posicion(850,150);
	Circulo* bt3 = new Circulo("boton3",20,posBt3);
	bt3->setColorFigura(new Color(230,230,0));
	this->addFigura(bt3);  

	Posicion* posBt4 = new Posicion(850,200);
	Circulo* bt4 = new Circulo("boton4",20,posBt4);
	bt4->setColorFigura(new Color(230,230,0));
	this->addFigura(bt4);  
	
	Posicion* posBt5 = new Posicion(850,250);
	Circulo* bt5 = new Circulo("boton5",20,posBt5);
	bt5->setColorFigura(new Color(230,230,0));
	this->addFigura(bt5);   

	Posicion* posBt6 = new Posicion(850,300);
	Circulo* bt6 = new Circulo("boton6",20,posBt6);
	bt6->setColorFigura(new Color(230,230,0));
	this->addFigura(bt6);  

	Posicion* posBt7 = new Posicion(850,350);
	Circulo* bt7 = new Circulo("boton7",20,posBt7);
	bt7->setColorFigura(new Color(230,230,0));
	this->addFigura(bt7);  
	

	Posicion* posBt8 = new Posicion(850,400);
	Circulo* bt8 = new Circulo("boton8",20,posBt8);
	bt8->setColorFigura(new Color(230,230,0));
	this->addFigura(bt8);   


}
int VentanaEditarEsc::graficar(){
	int done = 0;
	// Iniciar SDL
	if (SDL_Init(SDL_INIT_VIDEO) < 0) {
		printf("No se pudo iniciar SDL: %s\n",SDL_GetError());
		return -1;
	}
	atexit(SDL_Quit);
	// Comprobamos que sea compatible el modo de video
	if(SDL_VideoModeOK(this->getAncho(), this->getAlto(), 32, SDL_SWSURFACE|SDL_DOUBLEBUF) == 0) {
		std::cout<< "Modo no soportado: " << SDL_GetError() << std::endl;
		exit(1);
	}
	//seteamos el titulo a la barra
	SDL_WM_SetCaption(this->nombre.c_str(),NULL);
	
	//se crea la Ventana de edicion con dim 700x900
	this->screen = SDL_SetVideoMode(this->getAncho(),this->getAlto(),32, SDL_SWSURFACE | SDL_DOUBLEBUF );
	if(!screen){
		std::cout<<"No se pudo iniciar la pantalla: %s"<<SDL_GetError();
		return -1;
	}
	this->pintarPantalla();

	std::list<Figura*>::iterator iter;
	iter = this->iteratorListaFiguras();
	
	//Grafica las figuras enlistadas (botones, circulos, etc...)
	int i = 1;
	Figura *figura;
	while(i<=this->sizeListaFiguras()){
		figura = *iter;
		figura->dibujar(this->screen);
		iter++;
		i++;
	}
	return 0;
}



/************/
//controlador de eventos



/*void VentanaEditarEsc::arrastrarSoltar(Figura *figura, SDL_Surface *screen){
	//manejo el evento de arrastrar y de 2clic
	std::cout<<"llegue a arrast y soltar"<< std::endl;
	SDL_Event evento;
	bool seSolto = false;
	int x, y;
	
	while (SDL_PollEvent(&evento)){
	if(!seSolto){
		std::cout<<"dentro del 2do evento" << std::endl;
		SDL_Flip(screen);	
		//detecto si se pulso el mouse
		if (evento.type == SDL_MOUSEBUTTONDOWN){
			std::cout<<"se detecto tecla presionada"<< std::endl;
			//capturo las coordenadas
			SDL_GetMouseState(&x, &y);
			
			//aca actulizo la pocision de la figura

			seSolto = true;	
		}

		//detecto si se arrastro el mouse
		if(evento.type == SDL_MOUSEMOTION){
			std::cout<<"se detecto el mov del mouse"<< std::endl;
		//aca actulizo la pos de la figura en pantalla 
		
		}

	}//while

	}
}*/
